Shelving in stores, for example, a grocery store, are stocked and restocked with products on a periodic and on-going basis. Store employees spend a significant part of their day stocking, restocking, re-locating, re-arranging product, and removing old, expired, or seasonal products, on the shelves. Much of that time is spent walking up and down aisles in the store, inspecting the positions or locations of products on the shelves, to determine whether there is a need to restock, relocate, rearrange, or remove products at appropriate locations on the shelves. For example, if a supply of a particular product is low or has run out at its location on the shelf, the employee needs to retrieve further of that product from inventory, and restock the shelf at that location. If a product is in an incorrect location or askew, the employee needs to relocate or rearrange the product in its appropriate location on the same or a different shelf, as the case may be. If a product, such as fresh produce, or an otherwise perishable item of food, has spoiled or reached a “pull-date” or expiration date, the product needs to be removed. What is needed is a way to automatically determine whether there is a need to restock, relocate, rearrange or remove products at appropriate locations on the store shelves.